1 성남시 연료별 차량 데이터

엑셀에서 데이터를 가져와서 후속 데이터 분석이 가능하도록 전처리 작업을 수행한다.

library(tidyverse)
library(readxl)

# 차량등록현황
gu2_tbl <- read_excel("data/성남시 연료별 차량,인구,세대.xlsx",
                      sheet="인구 및 세대,차량 현황",
                      range = "A6:D38",
                      col_types =  c("text", "text", "text", "text"))

gu1_tbl <- read_excel("data/성남시 연료별 차량,인구,세대.xlsx",
                       sheet="인구 및 세대,차량 현황",
                       range = "E9:H31",
                      col_types =  c("text", "text", "text", "text"))

## 성남시 연료별 차량 등록현황
fuel_dat <- read_excel("data/성남시 연료별 차량,인구,세대.xlsx",
                       sheet="인구 및 세대,차량 현황",
                       range = "F35:L48")

1.1 데이터 전처리

1.1.1 세대별 차량현황

# 3구 차량 보유현황
sujung_tbl <- gu2_tbl %>% 
  slice(4:20) %>% 
  mutate(구명 = "수정구")

jungwon_tbl <- gu2_tbl %>% 
  slice(22:32) %>% 
  mutate(구명 = "중원구")

bundang_tbl <- gu1_tbl %>% 
  set_names(names(gu2_tbl)) %>% 
  mutate(구명 = "분당구")

sungnam_tbl <- bind_rows(bundang_tbl, jungwon_tbl) %>% 
  bind_rows(bundang_tbl) %>% 
  relocate(구명, -1) %>% 
  rename(동명 = 행정기관)

sungnam_tbl 
# A tibble: 55 x 5
   구명   동명    세대수 `차량(대)` `1세대평균\r\n(대)`
   <chr>  <chr>   <chr>  <chr>      <chr>              
 1 분당구 분당동  10,390 9864       0.94937439846005778
 2 분당구 수내1동 7,746  7794       1.0061967467079782 
 3 분당구 수내2동 3,207  3949       1.2313688805737448 
 4 분당구 수내3동 5,215  5102       0.97833173537871521
 5 분당구 정자동  8,300  6805       0.8198795180722892 
 6 분당구 정자1동 14,070 13459      0.95657427149964458
 7 분당구 정자2동 7,661  5111       0.66714528129487016
 8 분당구 정자3동 6,136  5450       0.8882007822685789 
 9 분당구 서현1동 12,769 13098      1.0257655258829979 
10 분당구 서현2동 6,790  6828       1.0055964653902798 
# … with 45 more rows

1.1.2 연료별 차량등록현황

fuel_tbl <- fuel_dat %>% 
  dplyr::select(연료별, 분당구, 수정구, 중원구) %>% 
  filter(!str_detect(연료별, "합계")) %>% 
  pivot_longer(cols = 분당구:중원구, names_to = "구명", values_to = "차량댓수") %>% 
  select(구명, 연료별, 차량댓수)

fuel_tbl
# A tibble: 36 x 3
   구명   연료별   차량댓수
   <chr>  <chr>       <dbl>
 1 분당구 CNG           563
 2 수정구 CNG            94
 3 중원구 CNG           104
 4 분당구 경유        59573
 5 수정구 경유        31221
 6 중원구 경유        31786
 7 분당구 기타연료      469
 8 수정구 기타연료      146
 9 중원구 기타연료      111
10 분당구 수소           58
# … with 26 more rows

2 자동차 이산화탄소 배출 [^1]

화석연료 자동차의 전과정 (Life-cycle), 휘발 유연료를 예로들면, 휘발유의 원료가 되는 원유를 산지에 서 추출하고, 유조선을 통해 국내로 운반 하고, 정유 공장에서 휘발유를 만들고, 유조차를 통해 전국의 주유소로 분배 후 주유기를 통해 차량에 주유를 하는 Well-to-tank(WTT) 과정과, 차량이 운행되면서 온실가스가 발생되는 Tank-to- wheel(TTW) 과정이 합쳐진 Well-to-wheel(WTW) 과정을 의미한다.

화석연료 자동차 전기차의 경우에는 다양한 발전 형태가 있기 때문에 각 각에 해당하는 우라늄, 석탄, 천연가스 등의 원료를 산지에 서부터 추출, 가공 및 운반절차를 통해 발전소까지 들여오고, 전기를 생산하고 송배전을 거쳐 차량에 충전될 때까지의 WTT 과정과, 차량이 운행되는 TTW 과정으로 분류한다. 결국 전기 자동차는 TTW 과정에서는 온실가스가 배출되지 않지만 WTT 과정에서는 온실가스 발생이 있고, 이와 공정한 비교를 위해서는 기존 화석연료 자동차의 경우에도 WTW 측면에서 발생한 전과정 온실가스 배출량을 계산해야 한다.

knitr::include_graphics("data/KSAEJ_20173904_39-43.pdf")

[^1] : 송한호 “국내 자동차 연료별 온실가스 배출량 전과정 분석 - Well-to-Wheel Analysis of Greenhouse Gas Emissions of Transportation Fuels in Korea,” Auto Journal 2017. 04 웹링크

교통부문 온실가스관리 시스템에 나온 구분에 따라 연료를 나눈다.

  • 휘발유
  • 경유
  • LPG
  • 기타

3 친환경 연료장착 자동차

library(reactable)

green_tbl <- fuel_tbl %>% 
  mutate(연료구분 = case_when(str_detect(`연료별`, "하이브리드") ~ "하이브리드",
                              str_detect(`연료별`, "휘발유") ~ "휘발유",
                              str_detect(`연료별`, "경유") ~ "경유",
                              str_detect(`연료별`, "(CNG)|(엘피지)") ~ "LPG",
                              TRUE ~ "전기,수소 등")) %>% 
  mutate(연료구분 = factor(연료구분, levels = c("경유", "휘발유", "하이브리드", "LPG", "전기,수소 등"))) 

green_tbl %>% 
  group_by(연료구분) %>% 
  summarise(차량댓수 = sum(차량댓수)) %>% 
  arrange(desc(연료구분)) %>% 
  mutate(누적댓수 = cumsum(차량댓수),
        누적비율  = 누적댓수 / sum(차량댓수)) %>% 
  reactable::reactable(columns = list(
    차량댓수 = colDef(format = colFormat(prefix = "", separators = TRUE, digits = 0)),
    누적댓수 = colDef(format = colFormat(prefix = "", separators = TRUE, digits = 0)),
    누적비율 = colDef(format = colFormat(separators = TRUE, percent = TRUE, digits = 1))))
 

데이터 과학자 이광춘 저작

kwangchun.lee.7@gmail.com